package ChaiPiao;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class MixTypeProvider {
    public static Map<String, List<Integer>> mixMap;

    static {
        mixMap = new HashMap<>();
        //1_1
        List<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(1);
        mixMap.put(MIX_TYPE.M_1_1.toString(), list);

        //2_1
        list = new ArrayList<>();
        list.add(2);
        list.add(2);
        mixMap.put(MIX_TYPE.M_2_1.toString(), list);


        //3_1
        list = new ArrayList<>();
        list.add(3);
        list.add(3);
        mixMap.put(MIX_TYPE.M_3_1.toString(), list);

        //4_1
        list = new ArrayList<>();
        list.add(4);
        list.add(4);
        mixMap.put(MIX_TYPE.M_4_1.toString(), list);

        //5_1
        list = new ArrayList<>();
        list.add(5);
        list.add(5);
        mixMap.put(MIX_TYPE.M_5_1.toString(), list);

        //6_1
        list = new ArrayList<>();
        list.add(6);
        list.add(6);
        mixMap.put(MIX_TYPE.M_6_1.toString(), list);

        //7_1
        list = new ArrayList<>();
        list.add(7);
        list.add(7);
        mixMap.put(MIX_TYPE.M_7_1.toString(), list);

        //8_1
        list = new ArrayList<>();
        list.add(8);
        list.add(8);
        mixMap.put(MIX_TYPE.M_8_1.toString(), list);

        //3_3
        list = new ArrayList<>();
        list.add(3);
        list.add(2);
        mixMap.put(MIX_TYPE.M_3_3.toString(), list);

        //3_4
        list = new ArrayList<>();
        list.add(3);
        list.add(2);
        list.add(3);
        mixMap.put(MIX_TYPE.M_3_4.toString(), list);

        //4_4
        list = new ArrayList<>();
        list.add(4);
        list.add(3);
        mixMap.put(MIX_TYPE.M_4_4.toString(), list);

        //4_5
        list = new ArrayList<>();
        list.add(4);
        list.add(4);
        list.add(3);
        mixMap.put(MIX_TYPE.M_4_5.toString(), list);


        //4_6
        list = new ArrayList<>();
        list.add(4);
        list.add(2);
        mixMap.put(MIX_TYPE.M_4_6.toString(), list);

        //4_11
        list = new ArrayList<>();
        list.add(4);
        list.add(2);
        list.add(3);
        list.add(4);
        mixMap.put(MIX_TYPE.M_4_11.toString(), list);

        //5_5
        list = new ArrayList<>();
        list.add(5);
        list.add(4);
        mixMap.put(MIX_TYPE.M_5_5.toString(), list);

        //5_6
        list = new ArrayList<>();
        list.add(5);
        list.add(4);
        list.add(5);
        mixMap.put(MIX_TYPE.M_5_6.toString(), list);

        //5_10
        list = new ArrayList<>();
        list.add(5);
        list.add(2);
        mixMap.put(MIX_TYPE.M_5_10.toString(), list);

        //5_16
        list = new ArrayList<>();
        list.add(5);
        list.add(3);
        list.add(4);
        list.add(5);
        mixMap.put(MIX_TYPE.M_5_16.toString(), list);

        //5_20
        list = new ArrayList<>();
        list.add(5);
        list.add(2);
        list.add(3);
        mixMap.put(MIX_TYPE.M_5_20.toString(), list);

        //5_26
        list = new ArrayList<>();
        list.add(5);
        list.add(2);
        list.add(3);
        list.add(4);
        list.add(5);
        mixMap.put(MIX_TYPE.M_5_26.toString(), list);

        //6_6
        list = new ArrayList<>();
        list.add(6);
        list.add(5);
        mixMap.put(MIX_TYPE.M_6_6.toString(), list);

        //6_7
        list = new ArrayList<>();
        list.add(6);
        list.add(6);
        list.add(5);
        mixMap.put(MIX_TYPE.M_6_7.toString(), list);

        //6_15
        list = new ArrayList<>();
        list.add(6);
        list.add(2);
        mixMap.put(MIX_TYPE.M_6_15.toString(), list);

        //6_20
        list = new ArrayList<>();
        list.add(6);
        list.add(3);
        mixMap.put(MIX_TYPE.M_6_20.toString(), list);

        //6_22
        list = new ArrayList<>();
        list.add(6);
        list.add(4);
        list.add(5);
        list.add(6);
        mixMap.put(MIX_TYPE.M_6_22.toString(), list);

        //6_35
        list = new ArrayList<>();
        list.add(6);
        list.add(2);
        list.add(3);
        mixMap.put(MIX_TYPE.M_6_35.toString(), list);

        //6_42
        list = new ArrayList<>();
        list.add(6);
        list.add(3);
        list.add(4);
        list.add(5);
        list.add(6);
        mixMap.put(MIX_TYPE.M_6_42.toString(), list);

        //6_50
        list = new ArrayList<>();
        list.add(6);
        list.add(4);
        list.add(3);
        list.add(2);
        mixMap.put(MIX_TYPE.M_6_50.toString(), list);

        //6_57
        list = new ArrayList<>();
        list.add(6);
        list.add(2);
        list.add(3);
        list.add(4);
        list.add(5);
        list.add(6);
        mixMap.put(MIX_TYPE.M_6_57.toString(), list);

        //7_7
        list = new ArrayList<>();
        list.add(7);
        list.add(6);
        mixMap.put(MIX_TYPE.M_7_7.toString(), list);

        //7_8
        list = new ArrayList<>();
        list.add(7);
        list.add(6);
        list.add(7);
        mixMap.put(MIX_TYPE.M_7_8.toString(), list);
        //7_21
        list = new ArrayList<>();
        list.add(7);
        list.add(5);
        mixMap.put(MIX_TYPE.M_7_21.toString(), list);
        //7_35
        list = new ArrayList<>();
        list.add(7);
        list.add(4);
        mixMap.put(MIX_TYPE.M_7_35.toString(), list);
        //7_120
        list = new ArrayList<>();
        list.add(7);
        list.add(2);
        list.add(3);
        list.add(4);
        list.add(5);
        list.add(6);
        list.add(7);
        mixMap.put(MIX_TYPE.M_7_120.toString(), list);
        //8_8
        list = new ArrayList<>();
        list.add(8);
        list.add(7);
        mixMap.put(MIX_TYPE.M_8_8.toString(), list);
        //8_9
        list = new ArrayList<>();
        list.add(8);
        list.add(8);
        list.add(7);
        mixMap.put(MIX_TYPE.M_8_9.toString(), list);
        //8_28
        list = new ArrayList<>();
        list.add(8);
        list.add(6);
        mixMap.put(MIX_TYPE.M_8_28.toString(), list);
        //8_56
        list = new ArrayList<>();
        list.add(8);
        list.add(5);
        mixMap.put(MIX_TYPE.M_8_56.toString(), list);
        //8_70
        list = new ArrayList<>();
        list.add(8);
        list.add(4);
        mixMap.put(MIX_TYPE.M_8_70.toString(), list);
        //8_247
        list = new ArrayList<>();
        list.add(8);
        list.add(2);
        list.add(3);
        list.add(4);
        list.add(5);
        list.add(6);
        list.add(7);
        list.add(8);
        mixMap.put(MIX_TYPE.M_8_247.toString(), list);
    }

    private List<Integer> list;

    public MixTypeProvider() {

    }

    public void setMixType(String mixType) {
        this.list = mixMap.get(mixType);
    }

    public Integer getMixBase() {
        if (null == list)
            return null;
        return list.get(0);
    }

    public List<Integer> getMix_1() {
        if (null == list)
            return null;
        return list.subList(1, list.size());
    }

    enum MIX_TYPE {
        M_1_1,
        M_2_1,
        M_3_1,
        M_4_1,
        M_5_1,
        M_6_1,
        M_7_1,
        M_8_1,
        M_3_3,
        M_3_4,
        M_4_4,
        M_4_5,
        M_4_6,
        M_4_11,
        M_5_5,
        M_5_6,
        M_5_10,
        M_5_16,
        M_5_20,
        M_5_26,
        M_6_6,
        M_6_7,
        M_6_15,
        M_6_20,
        M_6_22,
        M_6_35,
        M_6_42,
        M_6_50,
        M_6_57,
        M_7_7,
        M_7_8,
        M_7_21,
        M_7_35,
        M_7_120,
        M_8_8,
        M_8_9,
        M_8_28,
        M_8_56,
        M_8_70,
        M_8_247

    }
}